package com.hzw.saas.api.hpc;

import com.hzw.saas.api.hpc.bo.HpcAccountBo;
import com.hzw.saas.api.hpc.enums.HpcProviderType;

import java.util.List;

/**
 * <p>
 * 用户超算中心帐号表 服务类
 * </p>
 *
 * @author sonam
 * @since 2021-03-22
 */
public interface IHpcAccountService {

    HpcAccountBo getAccount(HpcAccountBo hpcAccountPoolBo);

    /**
     * 通用的检索
     *
     * @param hpcAccountBo
     * @return
     */
    List<HpcAccountBo> query(HpcAccountBo hpcAccountBo);

    HpcAccountBo getById(String pid);

    boolean update(HpcAccountBo hpcAccountPoolBo);

    void addBatch(List<HpcAccountBo> hpcAccountBos);

    void delete(String hpcAccountId);

    /**
     * 获取全部数量
     *
     * @return
     */
    int getHpcAccountSumCount(HpcProviderType providerType);

    /**
     * 获取可用数量
     *
     * @return
     */
    int getUsableHpcAccountCount(HpcProviderType providerType);

    /**
     * 获取需要补充核时的超算账号数量
     *
     * @return
     */
    int getNeedAddHpcCoreCount(HpcProviderType providerType, Double balanceCore);

}
